﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using WebMovil.Base;
using System.Windows.Forms;


namespace WebMovil
{
    public partial class About : System.Web.UI.Page
    {
        int a;

        protected void Page_Load(object sender, EventArgs e)
        {
            if (IsPostBack)
            {
                a = LBDescripcion.SelectedIndex;
            }
            else
            {
                DataClasses1DataContext bd = new DataClasses1DataContext();
                DDLClientes.DataSource = bd.SociosNegocios.Select(a => a.Nombre);
                DDLClientes.DataBind();
                DDLCompañia.DataSource = bd.Compañia.Select(a => a.Nombre);
                DDLCompañia.DataBind();



                //var ordenesCompra = from o in db.OrdenCompras
                //                    join a in db.Articulos on o.idArticulo equals a.id
                //                    join p    in db.Proveedors on o.idProveedor equals p.id
                //                    where o.idProveedor == usuario
                //                    select new Ocompra { articulo = a.articulo1, cantidad = o.cantidad, cliente = o.cliente, precio = a.precio, total = o.total };

            }
        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            var db = new DataClasses1DataContext();
            var articulo = from o in db.MaestroArticulos
                           join a in db.ArticulosXBodegas on o.IdMaestroArticulo equals a.IdMaestroXArticulo
                           where o.Codigo == TB_CodArt.Text && a.Disponible > int.Parse(TB_Cant.Text)
                           select new
                           {
                               desc = o.Descripcion,
                               prec = a.CostoUnitario,
                               bod= a.IdBodega
                           };
            TableCell auxc = new TableCell();
            TableRow auxr = new TableRow();

            
            LBCodigo.Items.Add(new ListItem(TB_CodArt.Text));
            LBDescripcion.Items.Add(new ListItem(articulo.First().desc));
            LBPrecio.Items.Add(new ListItem(articulo.First().prec.ToString()));
            LBCantidad.Items.Add(new ListItem(TB_Cant.Text));
            int nomb= articulo.First().bod;
            var bodega = from b in db.Bodega
                         where b.IdBodega == nomb
                         select new
                         {
                             nombre = b.Nombre
                         };
            LBBodega.Items.Add(new ListItem(bodega.First().nombre));



            TB_Subt.Text = (float.Parse(TB_Subt.Text) + (articulo.First().prec * int.Parse(TB_Cant.Text))).ToString();

            if (Imp.Checked == true)
            {
                LBImpuesto.Items.Add(new ListItem("13%"));
                LBTotal.Items.Add(new ListItem(((articulo.First().prec * int.Parse(TB_Cant.Text)) + ((articulo.First().prec * int.Parse(TB_Cant.Text)) * 0.13)).ToString()));
             
                TB_Tot.Text = (float.Parse(TB_Tot.Text) + ((float.Parse(TB_Subt.Text) + (articulo.First().prec * int.Parse(TB_Cant.Text)) + ((articulo.First().prec * int.Parse(TB_Cant.Text)) * 0.13)))).ToString();


            }
            else
            {
                LBImpuesto.Items.Add(new ListItem("EXENTO"));
                LBTotal.Items.Add(new ListItem(((articulo.First().prec * int.Parse(TB_Cant.Text))).ToString()));
            
                TB_Tot.Text = ((float.Parse(TB_Tot.Text) + (articulo.First().prec * int.Parse(TB_Cant.Text)))).ToString();
            }
            TB_Im.Text = (float.Parse(TB_Tot.Text) - float.Parse(TB_Subt.Text)).ToString();
            
        }

        protected void Button2_Click(object sender, EventArgs e)
        {


        }

        protected void Button3_Click(object sender, EventArgs e)
        {
            try
            {

                
                DataClasses1DataContext db = new DataClasses1DataContext();
                var idSocio = from a in db.SociosNegocios
                              join b in db.Compañia on a.IdCompañia equals b.IdCompañia
                              where a.Nombre == DDLClientes.SelectedValue
                              select new { a.IdSocioNegocio };
                var todos = db.Ventas.Count();

                string iddoc = todos.ToString() + "V";
                var idcomp = from a in db.Compañia
                             where a.Nombre == DDLCompañia.SelectedValue
                             select new { a.IdCompañia };

                var ale = new Ventas
                    {
                        IdSociosNegocio = idSocio.First().IdSocioNegocio,
                        FechaContabilizacion = DateTime.Now,
                        FechaEntrega = DateTime.Now.AddDays(3),
                        SubTotal = float.Parse(TB_Subt.Text),
                        Impuesto = float.Parse(TB_Im.Text),
                        Total = float.Parse(TB_Tot.Text),
                        Moneda = "colon",
                        NumeroDocumento = iddoc.ToString(),
                        Estado = false,
                        IdCompañia = idcomp.First().IdCompañia
                    };
                db.Ventas.InsertOnSubmit(ale);
                db.SubmitChanges();
                int id = ale.IdVentas;



                for (int i = 0; i < LBDescripcion.Items.Count; i++)
                {
                    string desc = LBDescripcion.Items[i].Text;
                    string nomb = LBCodigo.Items[i].Text;
                    var idart = from a in db.ArticulosXBodegas
                                join b in db.MaestroArticulos on a.IdMaestroXArticulo equals b.IdMaestroArticulo
                                where (b.Descripcion == desc) && (a.IdCompañia == idcomp.First().IdCompañia) && (b.Codigo == nomb)
                                select new { idarticulo = a.IdMaestroXArticulo };


                    var bodega = from b in db.Bodega
                                 where b.Nombre == LBBodega.Items[i].Text && b.IdCompañia == idcomp.First().IdCompañia
                                 select new
                                 {
                                     idb = b.IdBodega
                                 };

                    float im;
                    if (LBImpuesto.Items[i].Text.Equals("13%"))
                    {
                        im = (float)0.13;
                    }
                    else
                    {
                        im = 0;
                    }

                    db.ArticulosXVenta.InsertOnSubmit
                    (new ArticulosXVenta
                    {
                        IdArticulo = idart.First().idarticulo,
                        Cantidad = int.Parse(LBCantidad.Items[i].Text),
                        PrecioVenta = int.Parse(LBPrecio.Items[i].Text),
                        Impuesto = im,
                        TotalLinea = float.Parse(LBTotal.Items[i].Text),
                        IdBodega = bodega.First().idb,
                        IdCompañia = idcomp.First().IdCompañia,
                        IdVentas = id
                    });
                    db.SubmitChanges();
                    var up = db.ArticulosXBodegas.Where(x => x.Bodega.IdBodega == bodega.First().idb && x.IdCompañia == ale.IdCompañia && x.IdMaestroXArticulo == idart.First().idarticulo);
                    up.First().Comprometido += int.Parse(LBCantidad.Items[i].Text);
                    up.First().Disponible -= int.Parse(LBCantidad.Items[i].Text);
                    db.SubmitChanges();
                   
                };
                
                MessageBox.Show("Ingresada Correctamente");
                LBCodigo.Items.Clear();
                LBDescripcion.Items.Clear();
                LBImpuesto.Items.Clear();
                LBBodega.Items.Clear();
                LBCantidad.Items.Clear();
                LBPrecio.Items.Clear();
                LBTotal.Items.Clear();

            }
            catch (Exception em)
            {
            }
            
        }

    }

}
